package com.sky.service;

import com.sky.dto.*;
import com.sky.result.Result;
import com.sky.vo.OrderPaymentVO;
import org.springframework.web.bind.annotation.*;

/**
 * @Auther: zhaoss
 * @Date: 2023/5/6 - 05 - 06 - 17:21
 * @Description: com.sky.service
 * @version: 1.0
 */
public interface OrdersService {

    /**
     * 下单
     * @return
     */
    public Result submit(OrdersSubmitDTO dto);

    /**
     * 查询历史订单
     * @param dto
     * @return
     */
    public Result pageHistoryOrders(OrdersPageQueryDTO dto);

    /**
     * 订单详情
     * @return
     */
    public Result getDetails(Long id);

    /**
     * 取消订单
     * @param id
     * @return
     */
    public Result putOrder( Long id);

    /**
     * 再来一单
     * @param id
     * @return
     */
    public Result recurOrder( Long id);

    /**
     * 订单搜索
     * @param dto
     * @return
     */
    public Result pageOrders(OrdersPageQueryDTO dto);

    /**
     * 查询各个订单状态数量
     * @return
     */
    public Result getStatistics();

    /**
     *接单
     * @return
     */
    public Result confirm( OrdersConfirmDTO dto);

    /**
     *拒单
     * @return
     */
    public Result rejection(OrdersRejectionDTO dto);

    /**
     *取消定单
     * @return
     */
    public Result cancel(OrdersCancelDTO dto);

    /**
     *派送定单
     * @return
     */
    public Result delivery(Long id);

    /**
     *完成定单
     * @return
     */
    public Result complete(Long id);

    /**
     * 订单支付
     * @param ordersPaymentDTO
     * @return
     */
    OrderPaymentVO payment(OrdersPaymentDTO ordersPaymentDTO) throws Exception;

    /**
     * 支付成功，修改订单状态
     * @param outTradeNo
     */
    void paySuccess(String outTradeNo);

    /**
     * 用户催单
     * @param id
     */
    void reminder(Long id);
}
